package com.owbtgad.common.network.net

import android.util.Log
import android.view.View
import androidx.lifecycle.Observer
import com.owbtgad.common.network.BaseResp
import com.owbtgad.common.network.DataState
import com.owbtgad.common.utils.ToastUtils

/**
 * 创建日期 2021/5/31
 * 描述：
 */
open class IStateObserver<T> (val view:View?):Observer<BaseResp<T>>{


    override fun onChanged(t: BaseResp<T>) {
        when (t.dataState) {
            DataState.STATE_SUCCESS -> {
                //请求成功，数据不为null
                onDataChange(t.data)
            }

            DataState.STATE_EMPTY -> {
                //数据为空
                onDataEmpty()
            }

            DataState.STATE_FAILED->{
                onFail(t.getUrlCode(),t.getUrlMsg())
            }
            DataState.STATE_ERROR -> {
                //请求错误
                t.error?.let { onError(it) }
            }
            else -> {
            }
        }

    }

    /**
     * 请求数据且数据不为空
     */
    open fun onDataChange(data: T?) {

    }

    /**
     * 请求成功，但数据为空
     */
    open fun onDataEmpty() {

    }

    /**
     * 请求错误
     */
    open fun onError(e: Throwable?) {

    }

    /**
     * 弹Toast
     */
    private fun showToast(msg: String) {
        view?.apply {
            ToastUtils.showToast(this.context,msg)
        }
    }

    open fun onFail(code:Int?,msg:String?){
        msg?.also {
            showToast(it)
        }
    }

}